<?php

require 'config.php';
require CAMINHO_SERVIDOR.'funcoes.php';
require 'dao/jogoDAO.class.php';
$jogoDao = new jogoDAO();

function liberarAposta($id_jogo, $comando_hora_atual, $comando_data_atual) {
    $jogoDao = new jogoDAO();
    $result = $jogoDao->getDadosDataHoraJogo($id_jogo, $comando_hora_atual, $comando_data_atual);
    if (strtotime($result['data']) < strtotime($result['data_atual'])) {
        return false;
    } else if (strtotime($result['data']) > strtotime($result['data_atual'])) {
        return true;
    } else if (strtotime($result['hora']) <= strtotime($result['hora_atual'])) {
        return false;
    } else {
        return true;
    }
}

function preparaArrayMsg($texto = "", $titulo = "", $tipo = "") {
    return array('msg' => $texto, 'titulo' => $titulo, 'tipo' => $tipo);
}

if (isset($_GET['id_campeonato']) && intval($_GET['id_campeonato'])) {
    $format = strtolower($_GET['format']) == 'json' ? 'json' : 'xml';
    $id_jogo = $_GET['id_jogo'];
    $id_campeonato = $_GET['id_campeonato'];
    $user_id = $_GET["id_usuario"];
    $aposta_a = ($_GET['aps_a'] == "") ? 0 : $_GET['aps_a'];
    $aposta_b = ($_GET['aps_b'] == "") ? 0 : $_GET['aps_b'];
    $isAposta = ($_GET['aposta']);
    $pagina = (isset($_GET['pag'])) ? $_GET['pag'] : 1;


    //TRATANDO RODADAS
    $rodadas = $jogoDao->getRodadasByCampeonatos($id_campeonato);
    $totalRodadas = count($rodadas);
    $rodada = (isset($_GET['rodada'])) ? $_GET['rodada'] : $totalRodadas;
    $auxTotalRod = $totalRodadas - 1;
    if ($_GET['inicial'] === "1") {
        $rodada = ($auxTotalRod >= 0) ? $auxTotalRod : 0;
    }
    $rodadaAtual = ($rodada > $totalRodadas) ? ($auxTotalRod >= 0) ? $auxTotalRod : 0  : $rodada;
    $proxRodada = (($rodadaAtual + 1) >= $totalRodadas) ? "x" : $rodadaAtual + 1;
    $antRodada = (($rodadaAtual - 1) < 0) ? "x" : $rodadaAtual - 1;

    if ($totalRodadas <= 0) {
        $descricaoRodada = "Rodadas/Grupos";
        $idRodada = 0;
    } else {
        $idRodada = $rodadas[$rodadaAtual]['id_rodada'];
        $descricaoRodada = $jogoDao->getDescricaoRodadaById($idRodada);
    }
    //##################################################################

    if ($isAposta) {
        //PEGA ID DA APOSTA
        $aposta = $jogoDao->getIdAposta($id_jogo, $user_id);
        //verifica se ainda pode apostar no jogo
        $aposta_liberada = liberarAposta($id_jogo, COMANDO_HORA_ATUAL, COMANDO_DATA_ATUAL);
        //FAZ A APOSTA
        if ($aposta_liberada) {
            if (empty($aposta)) {
                $result = $jogoDao->gravaAposta($user_id, $id_jogo, $aposta_a, $aposta_b);
            } else {
                $result = $jogoDao->atualizaAposta($aposta_a, $aposta_b, $aposta);
            }
            if ($result) {
                $msg[] = preparaArrayMsg(MSG_SUCESSO_APOSTA);
            } else {
                $msg[] = preparaArrayMsg(MSG_ERRO_APOSTA);
            }
        } else {
            $msg[] = preparaArrayMsg(MSG_TEMPO_ENCERRADO_APOSTA, "Tempo Encerrado!", "alerta");
        }
    }

    $registros = LIMITE_REGISTROS_PAGINA;
    $total = $jogoDao->getCountProxJogosByUserByCampeonato($id_campeonato, COMANDO_HORA_ATUAL, COMANDO_DATA_ATUAL, $idRodada);
    $numPaginas = ceil($total / $registros);
    $inicio = ($registros * $pagina) - $registros;
    if ($isAposta) {
        $quantRegistro = $registros * $pagina;
        if ($quantRegistro > LIMITE_MAX_REGISTROS_PAGINA) {
            $quantRegistro = LIMITE_MAX_REGISTROS_PAGINA;
        }
        $posts = $jogoDao->getJogosDadosApostasByUserByCampeonato($user_id, $id_campeonato, COMANDO_HORA_ATUAL, COMANDO_DATA_ATUAL, $idRodada, true, 0, $quantRegistro);
    } else {
        $posts = $jogoDao->getJogosDadosApostasByUserByCampeonato($user_id, $id_campeonato, COMANDO_HORA_ATUAL, COMANDO_DATA_ATUAL, $idRodada, true, $inicio, $registros);
    }
    if (empty($msg)) {
        $msg[] = preparaArrayMsg();
    }
    $dadosRodada[] = array('anterior' => $antRodada, 'atual' => $rodadaAtual, 'proximo' => $proxRodada, 'desc' => $descricaoRodada);
    $pag[] = array('pag' => $pagina, 'numPag' => $numPaginas);
    if ($format == 'json') {
        header('Content-type: application/json');
        echo json_encode(array('posts' => $posts, 'msgs' => $msg, 'pags' => $pag, 'rodadas' => $dadosRodada));
    } else {
        header('Content-type: text/xml');
        echo '<posts>';
        foreach ($posts as $index => $post) {
            if (is_array($post)) {
                foreach ($post as $key => $value) {
                    echo '<', $key, '>';
                    if (is_array($value)) {
                        foreach ($value as $tag => $val) {
                            echo '<', $tag, '>', htmlentities($val), '</', $tag, '>';
                        }
                    }
                    echo '</', $key, '>';
                }
            }
        }
        echo '</posts>';
    }
    $jogoDao->fecharConexao();
}
?>